return {
  'nvim-tree/nvim-tree.lua',
  dependencies = {
    'nvim-tree/nvim-web-devicons',
  },
  config = function()
    vim.g.loaded = 1
    vim.g.loaded_netrwPlugin = 1
    vim.opt.termguicolors = true
    local map = vim.api.nvim_set_keymap
    local opts = { noremap = true, silent = true }

    local status, nvim_tree = pcall(require, "nvim-tree")
    if not status then
      vim.notify("Not found nvim-tree.")
      return
    end

    map("n", "<leader>e", "<cmd>NvimTreeToggle<CR>", opts)
    map("n", "<leader>fo", "<cmd>NvimTreeFocus<CR>", opts)
    map("n", "<leader>fe", "<cmd>NvimTreeFindFile<CR>", opts)
    --[[
    `c`        Copy         |nvim-tree-api.fs.copy.node()| 复制文件
    `a`        Create       |nvim-tree-api.fs.create()| 创建文件
    `x`        Cut          |nvim-tree-api.fs.cut()| 剪切文件
    `p`        Paste        |nvim-tree-api.fs.paste()| 粘贴文件
    ]]

    vim.cmd [[ highlight NvimTreeIndentMarker guifg=#3FC5FF]]
    nvim_tree.setup({
      -- view = {
      --   width = 50,
      -- },
      renderer = {
        icons = {
          git_placement = "after", -- before after
          modified_placement = "before",
          glyphs = {
            folder = {
              arrow_closed = "",
              arrow_open = "",
              -- arrow_closed = "",
              -- arrow_open = ""
              -- arrow_closed = "",
              -- arrow_open = "",
            },
            git = {
              unstaged = "✗",
              staged = "✓",
              unmerged = "",
              renamed = "➜",
              untracked = "★",
              deleted = "",
              ignored = "◌",
            }
          }
        }
      },
      sort_by = "case_sensitive",
      actions = {
        open_file = {
          quit_on_open = true,
          window_picker = {
            enable = false
          }
        }
      },
      update_focused_file = {
        enable = true,
        update_root = true,
      },
      filters = {
        -- dotfiles = true,
        custom = {
          "^.git$",
          "^node_modules$",
        }
      },
      git = {
        enable = true,
      },
      log = {
        enable = true,
        types = {
          diagnostics = true,
        }
      },
      diagnostics = {
        enable = true,
        show_on_dirs = false,
        show_on_open_dirs = true,
        debounce_delay = 50,
        severity = {
          min = vim.diagnostic.severity.HINT,
          max = vim.diagnostic.severity.ERROR,
        },
        icons = {
          -- hint = "󰌵", -- "", -- "󰌵"
          -- info = "",
          -- warning = "",
          -- error = "",

          hint = "H",
          info = "I",
          warning = "W",
          error = "E",
        },
      },
    })
  end
}
